package main

import "fmt"

/*
结构体A继承了接口1
结构体B继承了结构体A
那么结构体B就可以重写接口1的方法
*/

//Cloud 设置一个接口，并定义一个方法
type Cloud interface {
	hello(content string)
	hello2()
}

//TencentCloud 结构体继承Cloud接口，并重写这个方法，并新加一个方法
type TencentCloud struct {
}

func (t *TencentCloud) hello(content string) {
	fmt.Println("hello tencent cloud", content)
}

func (t *TencentCloud) hello2() {
	fmt.Println("hello2 tencent cloud")
}

func (t *TencentCloud) send() {
	fmt.Println("tencent cloud send something")
}

//TencentGameCloud 结构体继承TencentCloud结构体
type TencentGameCloud struct {
	*TencentCloud
}

//重写父结构体继承接口的方法
func (t *TencentGameCloud) hello(content string) {
	t.send()   //调用父结构体的方法
	t.hello2() //调用父结构体接口的方法
	fmt.Println("hello tencent game cloud", content)
}

func main() {
	tencentGameCloud := TencentGameCloud{}
	tencentGameCloud.hello("哈哈哈哈")
	tencentGameCloud.hello2()
}
